﻿$(function () {
    $("#mvNuevo").dialog({
        modal: true,
        autoOpen: false,
        width: 900,
        height: 450,
        title: "Nueva Asignación de Roles",
        position: {my:'center',at:'bottom'},
        buttons: {
            "Cerrar": closePopup
        }
    });

    $("#btnNuevo").on("click", function () {}).button();
    $("#txtNombreFiltro").on("keypress", function (e) {
        if (e.which == 13) {
            buscar();
        }
    });
    $("#btnBuscar").on("click", function () {
        buscar();
    }).button();
    $("#btnLimpiar").on("click", function () {
        $("#txtNombreFiltro").val("");
        buscar();
    }).button();
    $("#btnEditar").on("click", function () {
       
    }).button();

    $("#ubicaciones").on('click', function () {
        
    }).buttonset();

    $("#ubicacion1").on("click", function () {
        $("#ubicacion2").removeAttr("checked");
        $("#ubicacion1").attr("checked", "checked");
        listarOficinaXUbicacion("ddlOficina", K_MensajeSelect.Seleccione, "ubicacion");
    });
    $("#ubicacion2").on("click", function () {
        $("#ubicacion1").removeAttr("checked");
        $("#ubicacion2").attr("checked", "checked");
        listarOficinaXUbicacion("ddlOficina", K_MensajeSelect.Seleccione, "ubicacion");
    });

    $("#hidCodigoSistema").on("change", function () {
        var codSistema = $("#hidCodigoSistema").val();
        listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, codSistema);
    });
    $("#txtSistema").on("keypress", function (e) {
        if (e.which == 13) {
            var codSistema = $("#hidCodigoSistema").val();
            listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, codSistema);
        }
    });
    $("#ddlModulo").on("change", function () {
        var codModulo = $("#ddlModulo").val();
        listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione, codModulo);
    });
    $("#ddlPerfil").on("change", function () {
        var codModulo = $("#ddlModulo").val();
        var codPerfil = $("#ddlPerfil").val();
        verPerfil(codModulo, codPerfil);
    });

    $("#btnAgregarUsu").on("click", function () {
        agregarUsuario();
        $("#txtUsuario").val("");
        $("#hidCodigoUsuario").val("");
    }).button();

    $("#ddlOficina").on("change", function () {
        var oficina = $("#ddlOficina").val();
        if (oficina != 0) {
            $("#txtUsuario").prop("disabled", false);
            $("#btnAgregarUsu").prop('disabled', false);
        } else {
            $("#txtUsuario").prop("disabled", true);
            $("#btnAgregarUsu").prop('disabled', true);
        }
    });
    //$("#btnGrabar").on("click", function () { insertar();   });

    $("#btnEliminar").on("click", function () {
        var item = new Array();

        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas.length > 0) {
            alertify.confirm("Esta seguro de eliminar los registros seleccionados?", function (e) {
                if (e) {
                    for (var i = 0; i < filas.length; i++) {
                        var codigoSel = (jQuery("#grid").jqGrid('getRowData', filas[i]).CodigoPerdilUsuario);
                        item[i] = codigoSel;
                    }
                    eliminar(item);
                } else {
                    alertify.error("Operación eliminación cancelada.");
                }
            });
        } else {
            alertify.error("Seleccione un elemento para eliminar.");
        }
        return false;
    }).button();
    
    $("#btnEditar").on("click", function () {
        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas != null) {
            if (filas.length > 0) {
                if (filas.length == 1) {
                    var codigoSel = jQuery("#grid").jqGrid('getRowData', filas[0]).CodigoPerdilUsuario;
                    redirectEdit(codigoSel);
                } else {
                    alertify.error("Para modificar seleccione sólo un elemento de la lista.");
                }
            } else {
                alertify.error("Seleccione un elemento para modificar.");
            }
        } else {
            alertify.error("Seleccione un elemento para modificar.");
        }
    }).button();

    initSistemaAutoCompletar("txtSistema", "hidCodigoSistema", "ddlModulo");
    initUsuarioAutoCompletar("txtUsuario", "hidCodigoUsuario");

    buscar();
});
function quitarUsuario(idUsuario, tipo) {
    $.ajax({
        data: { CodigoUsuario: idUsuario, tipo: tipo },
        url: 'QuitarUsuarioTmp',
        type: 'POST',
        success: function (response) {
            var dato = response;
            if (dato.result == K_ResultadoAjax.Exito) {
                listarUsuario();
            } else {
                alertify.error(dato.message);
            }
        }
    });
};

var agregarUsuario = function () {
    if ($("#hidCodigoUsuario").val() != "") {
        var usuario = {
            CodigoUsuario: $("#hidCodigoUsuario").val(),
            NombreUsuario: $("#txtUsuario").val(),
            CodigoOficina: $("#ddlOficina").val()
        };
        $.ajax({
            data: usuario,
            url: 'AgregarUsuarioTmp',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    listarUsuario();
                } else {
                    alertify.error(dato.message);
                }
            }
        });
    } else {
        alertify.error("Debe seleccionar un Usuario.");
    }
};

var listarUsuario = function () {
    $.ajax({
        url: 'ListarUsuarioTmp',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            if (dato.result == K_ResultadoAjax.Exito) {
                $("#divAgregarUsu").html(dato.message);
                if ($("#hidTotUsuariosTmp").val() != 0) {
                    $("#ddlOficina").prop("disabled", true);
                } else {
                    $("#ddlOficina").prop("disabled", false);
                }
            } else {
                alertify.error(dato.message);
            }
        }
    });
};

function cambiarEscritura(elem,idPerfil) {

    //var i = $("#hidNumOpcion_" + idPerfil).val();

    //for (var x = 1; x <= i; x++) {
    //    if (elem.checked) {
    //        $("#rbSinAcceso_" + idPerfil + "_" + x).removeAttr('checked');
    //        $("#rbEscritura_" + idPerfil + "_" + x).prop('checked', true);
    //    } else {
    //        $("#rbEscritura_" + idPerfil + "_" + x).removeAttr('checked');
    //        $("#rbSinAcceso_" + idPerfil + "_" + x).prop('checked', true);
    //    }
    //}

    if (elem.checked) {
        $(".rbOpcion").each(function (idx, valor) {
            var str = valor.id;
            var idRadio = str.substr(0, 11);
            if (idRadio == 'rbEscritura') {
                $(valor).prop('checked', true);
            } else {
                $(valor).removeAttr('checked');
            }
        });
    } else {
        $(".rbOpcion").each(function (idx, valor) {
            var str = valor.id;
            var idRadio = str.substr(0, 11);
            if (idRadio == 'rbSinAcceso') {
                $(valor).prop('checked', true);
            } else {
                $(valor).removeAttr('checked');
            }
        });
    }
}
function cambiarRadioOpciones(elem, idOpcion) {

    var i = $("#hidNumOpcion_" + idOpcion).val();

    for (var x = 1; x <= i; x++) {
        if (elem.value == 'N') {
            $("#rbEscritura_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbLectura_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbSinAcceso_" + idOpcion + "_" + x).prop('checked', true);
        } else if (elem.value == 'W') {
            $("#rbLectura_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbSinAcceso_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbEscritura_" + idOpcion + "_" + x).prop('checked', true);
        } else if (elem.value == 'R') {
            $("#rbSinAcceso_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbEscritura_" + idOpcion + "_" + x).removeAttr('checked');
            $("#rbLectura_" + idOpcion + "_" + x).prop('checked', true);
        }
    }
}

function verPerfil(idModulo,idPerfil) {
    //var src = $('#imgExpandPerfil_' + idModulo).attr('src');
    //if (src == '../Imagen/icono/plus.png') {
        //$('#imgExpandPerfil_' + idModulo).attr('src', '../Imagen/icono/minus.png');
        //$('#divContentPerfil_' + idModulo).attr("display", "inline");
        $.ajax({
            url: 'ListarAsignarPerfilHtml',
            data: { idModulo: idModulo, idPerfil: idPerfil },
            type: 'POST',
            beforeSend: function () { },
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    $("#divGrillaPerfil").html(dato.message);
                } else if (dato.result == K_ResultadoAjax.Error) {
                    alertify.error(dato.message);
                }
            }
        });
    //} else {
    //    $('#imgExpandPerfil_' + idModulo).attr('src', '../Imagen/icono/plus.png');
    //    $('#divContentPerfil' + idModulo).attr("display", "none");
    //    $("#divGrillaPerfil").html("");
    //}
    return false;
}
function verOpciones(idPerfil) {
    var src = $('#imgExpandOpc_' + idPerfil).attr('src');

    if (src == '../Imagen/icono/plus.png') {
       // alert('expandir  verOpciones');
        $('#imgExpandOpc_' + idPerfil).attr('src', '../Imagen/icono/minus.png');
        $('#divContentOpc_' + idPerfil).attr("display", "inline");
        $.ajax({
            url: 'ListarAsignarOpcionHtml',
            data: { idPerfil: idPerfil },
            type: 'POST',
            beforeSend: function () { },
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    $("#divGrillaOpc_" + idPerfil).html(dato.message);
                } else if (dato.result == K_ResultadoAjax.Error) {
                    alertify.error(dato.message);
                }
            }
        });
    } else {
       // alert('contrael  verOpciones');
        $('#imgExpandOpc_' + idPerfil).attr('src', '../Imagen/icono/plus.png');
        $('#divContentOpc_' + idPerfil).attr("display", "none");
        $("#divGrillaOpc_" + idPerfil).html("");
    }
    return false;

}
function verOpcionesRec(idPerfil, idOpc) {
    var src = $('#imgExpandOpc_' + idPerfil + '_' + idOpc).attr('src');
    if (src == '../Imagen/icono/plus.png') {
        $('#imgExpandOpc_' + idPerfil + '_' + idOpc).attr('src', '../Imagen/icono/minus.png');
        $('#divContentOpc_' + idPerfil + '_' + idOpc).css({"display":"inline"});
        //alert('expandir');
        //$.ajax({
        //    url: 'ListarAsignarOpcionRecHtml',
        //    data: { idPerfil: idPerfil, idOpc: idOpc },
        //    type: 'POST',
        //    beforeSend: function () { },
        //    success: function (response) {
        //        var dato = response;
        //        validarRedirect(dato);
        //        if (dato.result == K_ResultadoAjax.Exito) {
        //            $('#divGrillaOpc_' + idPerfil + '_' + idOpc).html(dato.message);
        //        } else if (dato.result == K_ResultadoAjax.Error) {
        //            alertify.error(dato.message);
        //        }
        //    }
        //});
    } else {
        //alert('contraer');
        $('#imgExpandOpc_' + idPerfil + '_' + idOpc).attr('src', '../Imagen/icono/plus.png');
        $('#divContentOpc_' + idPerfil + '_' + idOpc).css({"display":"none"});
        $('#divGrillaOpc_' + idPerfil + '_' + idOpc).html("");
    }
    return false;

}

function resetPopup() {
    msgOkB("aviso", "");
    limpiarRequerido();
    //listarOficinaXUbicacion("ddlOficina", K_MensajeSelect.Seleccione, "ubicacion");
    listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, $("#hidCodigoSistema").val() == "" ? 0 : $("#hidCodigoSistema").val());
    listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione, 0);

    $("#txtCodigo").val("");
    $("#txtSistema").val("");
    $("#hidCodigoSistema").val("");
    $("#txtUsuario").val("");
    $("#hidCodigoUsuario").val("");

    $("#ubicacion1").prop('disabled', false);
    $("#ubicacion2").prop('disabled', false);
    $("#ddlOficina").prop('disabled', false);
    $("#txtSistema").prop('disabled', false);
    $("#ddlModulo").prop('disabled', false);
    $("#ddlPerfil").prop('disabled', false);
    $("#txtUsuario").prop('disabled', true);
    $("#btnAgregarUsu").prop('disabled', true);
};

var closePopup = function () {
    $("#mvNuevo").dialog("close");
};

var insertar = function () {
    if (ValidarRequeridos()) {
        var codPerfil = $("#hidPerfil").val();
        var idRadioAnterior = "";
        var indice = 0;
        var roles = new Array();
        //"#tb_" + codPerfil + " tbody tr td input[type='radio'] "
        $(".rbOpcion").each(function (idx, valor) {
            if (idRadioAnterior != valor.name) {
                var str = valor.name;
                var Acceso = $("input[name='" + str + "']:checked").val();
                var codOpcion = str.substr(7, str.length - 7);
                //alert(Acceso + " - " + codOpcion);
                roles.push({
                    CodigoOpcion: codOpcion,
                    TipoAcceso: Acceso
                });
                indice++;
            }
            idRadioAnterior = valor.name;
        });

        if (indice != 0) {

            var asignacion = {
                CodigoOficina: $("#ddlOficina").val(),
                CodigoPerfil: $("#ddlPerfil").val(),
                ListaRoles: JSON.stringify(roles),
                CodigoPerfilUsuaro: $("#txtCodigo").val()
            };

            if ($("#hidOpcion").val() == K_Operacion.Insertar) {
                $.ajax({
                    url: 'InsertarAsignacion',
                    data: asignacion,
                    type: 'POST',
                    success: function (response) {
                        var dato = response;
                        validarRedirect(dato);
                        if (dato.result == K_ResultadoAjax.Exito) {
                            alertify.success(dato.message);
                            $("#mvNuevo").dialog("close");
                            buscar();
                        } else {
                            alertify.error(dato.message);
                        }
                    }
                });
            } else if ($("#hidOpcion").val() == K_Operacion.Editar) {
                $.ajax({
                    url: 'ActualizarAsignacion',
                    data: asignacion,
                    type: 'POST',
                    success: function (response) {
                        var dato = response;
                        validarRedirect(dato);
                        if (dato.result == K_ResultadoAjax.Exito) {
                            alertify.success(dato.message);
                            $("#mvNuevo").dialog("close");
                            buscar();
                        } else {
                            alertify.error(dato.message);
                        }
                    }
                });
            }
        } else {
            alertify.error("No se agrego ninguna opción a la configuración.");
        }
    }
};

function ver(id) {
    $("#hidOpcion").val(K_Operacion.Editar);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Actualizar información de Rol.');
    resetPopup();

    $.ajax({
        data: { CodigoPerfilUsuario: id },
        url: 'ObtenerUsuario',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var rol = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#divGrillaPerfil").html(dato.message);
                listarOficinaXUbicacion("ddlOficina", K_MensajeSelect.Seleccione, rol.idUbicacion,rol.idOficina);
                listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, rol.idSistema,rol.idModulo);
                listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione, rol.idModulo,rol.idPerfil);
                $("#txtSistema").val(rol.DescripcionSistema);
                $("#hidCodigoSistema").val(rol.idSistema);
                $("#lblCodigo").html(rol.CodigoPerfilUsuario);
                $("#lblUsuario").html(rol.NombreUsuario);
                $("#lblUbicacion").html(rol.idUbicacion == 24 ? "Perú" : "Exterior");
                //if (rol.idUbicacion == 24) {
                //    $("#lblubicacion1").attr("aria-pressed", true);
                //    $("#lblubicacion1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-active");
                //    $("#lblubicacion2").attr("aria-pressed", false);
                //    $("#lblubicacion2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right");
                //} else {
                //    $("#lblubicacion2").attr("aria-pressed", true);
                //    $("#lblubicacion2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right ui-state-active");
                //    $("#lblubicacion1").attr("aria-pressed", false);
                //    $("#lblubicacion1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left");
                //}
                //listarUsuario();

                $("#ubicacion1").prop('disabled', true);
                $("#ubicacion2").prop('disabled', true);
                $("#ddlOficina").prop('disabled', true);
                $("#txtSistema").prop('disabled', true);
                $("#ddlModulo").prop('disabled', true);
                $("#ddlPerfil").prop('disabled', true);
                //$("#txtUsuario").prop('disabled', true);
                //$("#btnAgregarUsu").prop('disabled', true);

            }
        }
    });
}
function del(id) {
    alertify.confirm("Esta seguro de eliminar el registro?", function (e) {
        if (e) {
            var item = Array();
            item[0] = id;
            eliminar(item);
        } else {
            alertify.error("Operación eliminación cancelada.");
        }
    });
    return false;
}

var buscar = function () {
    validarSesion();
    var opcion = {
        nombre: $("#txtNombreFiltro").val(),
        anulado: 2
    };

    $("#grid").jqGrid("clearGridData", true);
    $("#grid").jqGrid('setGridParam', { url: 'ListarUsuarioOpcionJQGRID', datatype: 'json', mtype: 'POST', postData: opcion }).trigger('reloadGrid');

    jQuery("#grid").jqGrid({
        url: 'ListarUsuarioOpcionJQGRID',
        datatype: 'json',
        postData: opcion,
        mtype: 'POST',
        colNames: ['Codigo Perfil Usuario ','Codigo Usuario', 'Nombre Usuario', 'Codigo Oficina', 'Oficina','Codigo Perfil','Perfil','Codigo Modulo','Modulo','Codigo Sistema','Sistema','Situacion', 'Accion'],
        colModel: [
            { name: 'CodigoPerdilUsuario', index: 'CodigoPerdilUsuario', width: 50, align: 'left', hidden: true },
            { name: 'CodigoUsuario', index: 'CodigoUsuario', width: 50, align: 'left', hidden: true },
            { name: 'NombreUsuario', index: 'NombreUsuario', width: 80, align: 'left', },
            { name: 'CodigoOficina', index: 'CodigoOficina', width: 50, align: 'left',hidden:true },
            { name: 'NombreOficina', index: 'NombreOficina', width: 80, align: 'left', },
            { name: 'CodigoPerfil', index: 'CodigoPerfil', width: 50, align: 'left', hidden: true },
            { name: 'NombrePerfil', index: 'NombrePerfil', width: 80, align: 'left', },
            { name: 'CodigoModulo', index: 'CodigoModulo', width: 50, align: 'left', hidden: true },
            { name: 'NombreModulo', index: 'NombreModulo', width: 80, align: 'left', },
            { name: 'CodigoSistema', index: 'CodigoSistema', width: 50, align: 'left', hidden: true },
            { name: 'NombreSistema', index: 'NombreSistema', width: 80, align: 'left', },
            { name: 'Situacion', index: "Situacion", width: 30, align: 'center' },
            { name: 'act', index: 'act', width: 75, sortable: false }],
        rowNum: 20,
        pager: jQuery('#pager'),
        rowList: [20, 30, 50],
        sortname: 'CodigoPerdilUsuario',
        viewrecords: true,
        sortorder: 'asc',
        multiselect: true,
        multiSort: true,
        width: '990',
        height: '200',
        caption: 'Roles Asignados',
        ondblClickRow: function (id) { verDeta(id); },
        gridComplete: function () {
            var ids = jQuery("#grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                xview = "<img src='../Imagen/icono/search.png' onclick=\"ver('" + cl + "');\"  />&nbsp;&nbsp;";
                xedit = "<img src='../Imagen/icono/edit.png' onclick=\"redirectEdit('" + cl + "');\"  />&nbsp;&nbsp;";
                xdel = "<img src='../Imagen/icono/del.png' onclick=\"del('" + cl + "');\"  /> ";
                jQuery("#grid").jqGrid('setRowData', ids[i], { act: xview + xedit + xdel });
            }
        }

    });
};
function redirectEdit(param) {
    location.href = "../Opcion/Asignar?param=" + param;
    //var codeEdit = (GetQueryStringParams("set"));
};

var eliminar = function (item) {
    $.each(item, function (index, i) {
        $.ajax({
            data: { CodigoPerfilUsuario: i },
            url: 'EliminarPerfilUsuario',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    alertify.success(dato.message);
                } else {
                    alertify.success(dato.message);
                }
            }
        });
    });
    buscar();
    return false;
};

